本文介绍了Postman 在使用 REST Api 时出现意外的“S"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 SpringBootApplication 中编写了非常基本的 REST 服务.当我尝试点击 api 时,我收到了类似 Unexpected 'S'

I wrote very basic REST service in SpringBootApplication. When I tried to hit the api I am getting response like Unexpected 'S'

这是我的api,

@RestController
    @RequestMapping(value="/rally")
    public class CreateProjectApi {

        @RequestMapping(value = "/createProject",
                produces = { "application/json" },
                consumes = { "application/json" },
                method = RequestMethod.GET)
        public ResponseEntity<String> createProj() {
            String s = "Success...";
            return new ResponseEntity<String>(s, HttpStatus.OK);
        }

    }

这是我的 POM.XML,

This is my POM.XML,

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.altimetrik.rally</groupId>
    <artifactId>RallyRestApi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>RallyRestApi</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <!-- Setup Spring MVC & REST, use Embedded Tomcat -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.rallydev.rest</groupId>
            <artifactId>rally-rest-api</artifactId>
            <version>2.2.1</version>
        </dependency>
</dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

我通过邮递员在标题中使用 content-type:application/json 访问 api.但是我收到了意外的S"作为回应.我已经点击了这个链接 意外的 's' 以响应宁静的服务但我没有从中得到任何解决方案.有人能帮我解决这个问题吗?

I am hitting the api through postman with content-type:application/json in header. But I am getting Unexpected 'S' as response. I have followed this link unexpected 's' in response of restful service but I didnt get any solution from that. Can anyone help me out in this?

推荐答案

正如 user7790438nbrooks,问题是您的响应将是纯文本(Success...),即使您告诉它加载 JSON(通过提供 Content-Type: application/json 标头).

As explained in the comments by both user7790438 and nbrooks, the issue is that your response will be plain text (Success...), even though you tell it to load JSON (by providing the Content-Type: application/json header).

要返回 JSON,您应该返回某种对象,例如,您可以像这样创建一个 ProjectStatus 类:

To return JSON, you should return some kind of object, for example, you could create a ProjectStatus class like this:

public class ProjectStatus {
    private String status;

    public ProjectStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }
}

现在,在您的 REST 控制器中,您应该返回一个 ResponseEntity,如下所示:

Now, in your REST controller you should return a ResponseEntity<ProjectStatus>, like this:

return new ResponseEntity<ProjectStatus>(new ProjectStatus("Success..."), HttpStatus.OK);

当您使用 Postman 时,这将产生以下 JSON:

This will result in the following JSON when you use Postman:

{"status": "Success..."}

您几乎可以返回任何您想要的对象.例如,在您的响应中返回创建的项目.

You can pretty much return any object you'd like. An example would be to return the created project in your response.

或者,如果您不需要 JSON,您可以提供 Content-Type: text/plain 标头.

Alternatively, if you don't need JSON, you could provide the Content-Type: text/plain header.

这篇关于Postman 在使用 REST Api 时出现意外的“S"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 20:48