k0p*_*kus 1 post http silex httpie
我有一个基本的silex应用程序,我尝试使用HTTPie进行测试.然而,使用时发布:
http POST http://localhost:1337 data="hello world"
Run Code Online (Sandbox Code Playgroud)
的data,我是从通过请求对象获取:
$data = $request->request->get('data');
Run Code Online (Sandbox Code Playgroud)
永远都是空的.这里有什么问题?
这是一个httpie使用问题,因为form标志是必需的,因为silex要求参数进行表单编码,但HTTPie的默认值是传递JSON对象.
$ http --form POST http://localhost:1337 data="hello world"
HTTP/1.1 200 OK
Cache-Control: no-cache
Connection: close
Content-Type: application/json
Date: Wed, 14 Oct 2015 15:04:09 GMT
Host: localhost:1337
X-Powered-By: PHP/5.5.9-1ubuntu4.13
{
"message": "hello world"
}
Run Code Online (Sandbox Code Playgroud)
只是为了澄清 kOpernikus 所说的内容,当您使用 httpie 发出 POST 请求时,请使用以下语法:
http --form post :3000/register username="gilbert" password="stackoverflow!"
Run Code Online (Sandbox Code Playgroud)
或者,由于表单用于post请求,您可以省略post并缩写--form为-f:
http -f :3000/register username=gilbert password=stackoverflow!
Run Code Online (Sandbox Code Playgroud)
编辑(感谢天线)
要将 csrf 令牌作为 post 请求中的标头传递,请执行以下操作:
http --form POST http://localhost:8000/login/ username=user password=pass X-CSRFToken:assQ$%auxASDLSIAJSd
Run Code Online (Sandbox Code Playgroud)