curl作为接口测试的一种方法,可以快速的在命令行下测试接口,他比postman来的更快。无需开启界面,有时候在生产环境linux服务器上,为了检验一个接口是否可以正常返回,我们通常是通过curl,这时候是不方便使用postman或者jmeter等工具的。一般get,post等请求可以很方便的模拟。但是遇到登录需要验证用户信息的,这时候需要做一些调整。
需要用户登录,我们可以通过直接调用登录接口,然后查看他返回的cookie信息,然后在接下来的请求中,带上cookie就可以正常访问后面的接口了。如下所示:
C:\Users\Administrator>curl http://localhost:8080/user/user-info
C:\Users\Administrator>curl -d "username=admin&password=123456" -v
http://127.0.0.1:8080/user/login
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> POST /user/login HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/7.45.0
> Accept: */*
> Content-Length: 30
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 30 out of 30 bytes
< HTTP/1.1 302
< Set-Cookie: JSESSIONID=50e25434-03f7-41f7-960c-c2773666d49a; Path=/; HttpOnly
< Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Wed, 09-Jan-2019 06:16:43 GMT
< Location: http://127.0.0.1:8080/admin;JSESSIONID=50e25434-03f7-41f7-960c-c2773666d49a
< Content-Language: zh-CN
< Content-Length: 0
< Date: Thu, 10 Jan 2019 06:16:43 GMT
<
* Connection #0 to host 127.0.0.1 left intact
C:\Users\Administrator>curl --cookie "JSESSIONID=50e25434-03f7-41f7-960c-c2773666d49a"
http://127.0.0.1:8080/
user/user-info
{"id":1,"username":"admin","password":"123456","age":20,"mobile":"15011186301","roles":null}
C:\Users\Administrator>
这里默认请求/usr/user-info接口,我们得不到任何信息,因为他需要用户登录,而只有登录了,才能拿到用户的cookie,这样,我们带上cookie,后台接口就知道用户登录过,就会返回正确的数据给请求了。
在模拟用户登录的接口中,我们加入了-v参数,就会打印请求和相应的具体信息,这样我们可以看到服务端设置的cookie。