REST API -使用“接受:application/json”HTTP Header

2fjabf4q  于 2023-05-02  发布在  其他
关注(0)|答案(5)|浏览(225)

当我发出请求时,我会得到XML格式的响应,但我需要的是JSON。在文档中,为了得到一个JSON作为返回,它是这样说的:使用Accept: application/json HTTP标头。
在哪里可以找到HTTP Header以将Accept: application/json放入其中?
我的猜测是它不应该在URL请求中,它看起来像:

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
tjrkku2a

tjrkku2a1#

你猜对了,HTTP头不是URL的一部分。
当您在浏览器中键入URL时,请求将以标准标题发出。无论如何,REST API并不意味着通过在浏览器的地址栏中输入端点来使用。
最常见的情况是您的服务器使用第三方REST API。
要做到这一点,你的服务器端代码伪造一个正确的GET(/PUT/POST/DELETE)请求,指向一个给定的端点(URL)设置(当需要时,就像你的情况一样)一些,最后(可能)发送一些数据(例如,通常发生在POST请求中)。
伪造请求、发送请求并最终获得响应的代码取决于您的服务器端语言。
如果您想测试REST API,可以在命令行使用**curl**工具。
curl发出请求并将响应输出到stdout(除非另有指示)。
在您的情况下,测试请求将像这样发出:

$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指令设置标头及其值。

wwwo4jvm

wwwo4jvm2#

这里有一个方便的网站test out your headers。你可以看到你的浏览器头,也可以使用cURL来反射你发送的任何头。
例如,您可以像这样验证内容协商。
这个Accept头更喜欢纯文本,所以以这种格式返回:-

$ curl -H "Accept: application/json;q=0.9,text/plain" http://gethttp.info/Accept
application/json;q=0.9,text/plain

而这一个更喜欢JSON,所以以这种格式返回:

$ curl -H "Accept: application/json,text/*;q=0.99" http://gethttp.info/Accept
{
   "Accept": "application/json,text/*;q=0.99"
}
5w9g7ksd

5w9g7ksd3#

基本上我使用Fiddler或Postman来测试API。
在fiddler中,在request header中你需要指定而不是xml,html你需要将其改为json。例如:Accept: application/json。应该可以了

ryhaxcpt

ryhaxcpt4#

如果是 Postman ,则添加显式头key =“accept”,value =“application/json”

5ktev3wc

5ktev3wc5#

Curl可能是JSON表示的更好选择,但在这种情况下,很难理解JSON的结构,因为它在命令行中。如果你想在浏览器上获得你的json,你只需删除所有的XML Annotations,就像-

@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.NONE)
@XmlAttribute
@XmlElement

从你的模型类,然后运行相同的URL,你已经用于XML表示。
确保你的pom中有jacson-databind依赖。XML

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.4.1</version>
</dependency>

相关问题