簡體   English   中英

如何通過測試解決API調用上的錯誤代碼“ 405”?

[英]How to solve error code “405” on API call with testing?

在IntelliJ的運行模式下測試API調用時,出現錯誤代碼“ 405”。 但是,當我測試API cal時; 在Postman中使用相同的參數即可使用。

我正在編寫一個自動存儲塔,用戶必須先登錄才能使用它。 登錄表單有效,當我嘗試使用Postman登錄時,它也會成功登錄。 但是,當我在IntelliJ上運行我的代碼時,它給我錯誤代碼“ 405”,表示“方法不允許”。

我的userController類代碼有效:

@PostMapping(value = "/login", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String login(@RequestBody MultiValueMap<String, String> body){
    String email = body.getFirst("email");
    String username = body.getFirst("username");
    String password = body.getFirst("password");

    return userService.loginUser(email, username, password);
}

我的功能測試代碼(也可以工作,因為我的API測試中的其他GET方法也可以工作):
公共類FunctionalTest {

@BeforeClass
public static void setup() {
    String port = System.getProperty("server.port");
    if (port == null) {
        RestAssured.port = Integer.valueOf(8080);
    }
    else{
        RestAssured.port = Integer.valueOf(port);
    }


    String basePath = System.getProperty("server.base");
    if(basePath==null){
        basePath = "/";
    }
    RestAssured.basePath = basePath;

    String baseHost = System.getProperty("server.host");
    if(baseHost==null){
        baseHost = "http://localhost";
    }
    RestAssured.baseURI = baseHost;
}
} 

最后是我用於測試POST方法以登錄的代碼:

//User control
@Test
public void checkLogin(){

    given()
            .param("email", "123")
            .param("username", "123")
            .param("password", "123")
            .when()
            .get("/login")
            .then()
            .statusCode(200);
}

希望有人能幫助我解決這個問題。

提前致謝!

405表示不允許使用方法。 發生這種情況是因為您要公開POST操作( @PostMapping(value = "/login", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)但嘗試通過GET進行消耗: .when().get("/login")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM