REST API - 使用 "Accept: application/json" HTTP Header
REST API - Use the "Accept: application/json" HTTP Header
当我发出请求时,我在 XML 中得到响应,但我需要的是 JSON。在文档中说明为了在 return 中获得 JSON:使用 Accept: application/json
HTTP Header.
我在哪里可以找到要将 Accept: application/json
放入其中的 HTTP Header?
我猜它不应该在 URL-request 里面,它看起来像:
http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00
您猜对了,HTTP Headers 不属于 URL。
并且当您在浏览器中键入 URL 时,将使用标准 header 发出请求。无论如何,REST Apis 并不意味着通过在浏览器的地址栏中键入端点来使用。
最常见的情况是您的服务器使用第三方 REST Api。
为此,您的 server-side 代码 伪造 一个正确的 GET (/PUT/POST/DELETE) 请求指向给定端点 (URL) 设置(在需要时,就像你的情况一样)一些 headers 最后(也许)发送一些数据(例如通常发生在 POST 请求中)。
伪造请求、发送请求并最终获得响应的代码取决于您的服务器端语言。
如果你想测试 REST Api 你可以从命令行使用curl
工具.
curl
发出请求并将响应输出到标准输出(除非另有说明)。
在您的情况下,测试请求将像这样发出:
$curl -H "Accept: application/json" 'http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00'
H
或 --header
指令设置 header 及其值。
Well Curl 可能是 json 表示的更好选择,但在那种情况下,很难理解 json 的结构,因为它在命令行中。
如果您想在浏览器上获取 json,只需删除所有 XML 注释 ,例如 -
@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.NONE)
@XmlAttribute
@XmlElement
从你的模型 class 和 运行 相同 url,你已经使用了 xml 表示。
确保您的 pom.xml
中有 jacson-databind 依赖项
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1</version>
</dependency>
这是 test out your headers 的便捷站点。您可以看到您的浏览器 headers,还可以使用 cURL 来反映您发送的任何 headers。
例如,您可以像这样验证内容协商。
此 Accept
header 更喜欢纯文本,因此 returns 采用那种格式:-
$ curl -H "Accept: application/json;q=0.9,text/plain" http://gethttp.info/Accept
application/json;q=0.9,text/plain
而这个人更喜欢 JSON 等格式的 returns:-
$ curl -H "Accept: application/json,text/*;q=0.99" http://gethttp.info/Accept
{
"Accept": "application/json,text/*;q=0.99"
}
基本上我使用 Fiddler 或 Postman 来测试 API。
在fiddler中,在请求头中你需要指定而不是xml,html你需要将其更改为json。
例如:Accept: application/json
。这应该可以完成工作。
当我发出请求时,我在 XML 中得到响应,但我需要的是 JSON。在文档中说明为了在 return 中获得 JSON:使用 Accept: application/json
HTTP Header.
我在哪里可以找到要将 Accept: application/json
放入其中的 HTTP Header?
我猜它不应该在 URL-request 里面,它看起来像:
http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00
您猜对了,HTTP Headers 不属于 URL。
并且当您在浏览器中键入 URL 时,将使用标准 header 发出请求。无论如何,REST Apis 并不意味着通过在浏览器的地址栏中键入端点来使用。
最常见的情况是您的服务器使用第三方 REST Api。
为此,您的 server-side 代码 伪造 一个正确的 GET (/PUT/POST/DELETE) 请求指向给定端点 (URL) 设置(在需要时,就像你的情况一样)一些 headers 最后(也许)发送一些数据(例如通常发生在 POST 请求中)。
伪造请求、发送请求并最终获得响应的代码取决于您的服务器端语言。
如果你想测试 REST Api 你可以从命令行使用curl
工具.
curl
发出请求并将响应输出到标准输出(除非另有说明)。
在您的情况下,测试请求将像这样发出:
$curl -H "Accept: application/json" 'http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00'
H
或 --header
指令设置 header 及其值。
Well Curl 可能是 json 表示的更好选择,但在那种情况下,很难理解 json 的结构,因为它在命令行中。 如果您想在浏览器上获取 json,只需删除所有 XML 注释 ,例如 -
@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.NONE)
@XmlAttribute
@XmlElement
从你的模型 class 和 运行 相同 url,你已经使用了 xml 表示。
确保您的 pom.xml
中有 jacson-databind 依赖项<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1</version>
</dependency>
这是 test out your headers 的便捷站点。您可以看到您的浏览器 headers,还可以使用 cURL 来反映您发送的任何 headers。
例如,您可以像这样验证内容协商。
此 Accept
header 更喜欢纯文本,因此 returns 采用那种格式:-
$ curl -H "Accept: application/json;q=0.9,text/plain" http://gethttp.info/Accept
application/json;q=0.9,text/plain
而这个人更喜欢 JSON 等格式的 returns:-
$ curl -H "Accept: application/json,text/*;q=0.99" http://gethttp.info/Accept
{
"Accept": "application/json,text/*;q=0.99"
}
基本上我使用 Fiddler 或 Postman 来测试 API。
在fiddler中,在请求头中你需要指定而不是xml,html你需要将其更改为json。
例如:Accept: application/json
。这应该可以完成工作。