[ad_1]
Tôi đang làm một máy chủ phụ trợ và tôi gặp một số sự cố khi kiểm tra/đăng ký lộ trình. Tôi nghĩ rằng tôi đã định cấu hình mọi thứ chính xác nhưng nó báo lỗi 406 khi tôi thử thực hiện phương thức POST trên Postman, đây là liên kết mà tôi đang sử dụng `http://127.0.0.1:8080/v1/users/register’ Cái này tôi đã kết nối với PostGreSQL DB, sau khi thực hiện yêu cầu trên Postman, tôi thậm chí đã kiểm tra cơ sở dữ liệu, nhưng không có gì ở đó cả, trước phần định tuyến này, tôi đã tạo một bảng bằng Ktor.
Đây là tập tin lộ trình của tôi
fun Route.userRoutes(db: repo, jwtService: JwtService, hashFunction: (String) -> String) { route("/v1/users") { post("/register") { try { val registerRequest = call.receive<RegisterRequest>() // Handle registration logic val user = User(registerRequest.email, hashFunction(registerRequest.password), registerRequest.name) db.addUser(user) call.respond(HttpStatusCode.OK, SimpleResponse(true, jwtService.generateToken(user))) } catch (e: Exception) { // Handle registration errors call.respond(HttpStatusCode.BadRequest, SimpleResponse(false, "Missing Some Fields or Registration Failed")) } }
Đăng ký lớp học
data class RegisterRequest( val email:String, val name:String, val password:String )
Lớp SimpleResponse
package com.example.data.model data class SimpleResponse( val success:Boolean, val message:String )
Và khi tôi cố gắng gửi POST trên POSTMAN thì đây là nội dung xuất hiện trên bảng điều khiển của tôi trong IntelliJ
2023-12-29 21:42:28.514 [eventLoopGroupProxy-4-1] TRACE io.ktor.server.routing.Routing - Trace for [v1, users, register] /, segment:0 -> SUCCESS @ / /session, segment:0 -> FAILURE "Selector didn't match" @ /session /json, segment:0 -> FAILURE "Selector didn't match" @ /json /, segment:0 -> SUCCESS @ / /(method:GET), segment:0 -> FAILURE "Selector didn't match" @ /(method:GET) /v1, segment:1 -> SUCCESS @ /v1 /v1/users, segment:2 -> SUCCESS @ /v1/users /v1/users/register, segment:3 -> SUCCESS @ /v1/users/register /v1/users/register/(method:POST), segment:3 -> SUCCESS @ /v1/users/register/(method:POST) /v1/users/login, segment:2 -> FAILURE "Selector didn't match" @ /v1/users/login Matched routes: "" -> "v1" -> "users" -> "register" -> "(method:POST)" Route resolve result: SUCCESS @ /v1/users/register/(method:POST) 2023-12-30 21:04:26.349 [eventLoopGroupProxy-4-1] TRACE i.k.server.engine.DefaultTransform - No Default Transformations found for class io.ktor.utils.io.ByteBufferChannel and expected type TypeInfo(type=class com.example.data.model.RegisterRequest, reifiedType=class com.example.data.model.RegisterRequest, kotlinType=com.example.data.model.RegisterRequest) for call /v1/users/register 2023-12-30 21:04:26.375 [eventLoopGroupProxy-4-1] TRACE i.k.s.p.c.ContentNegotiation - No suitable content converter found for request type class com.example.data.model.RegisterRequest 2023-12-30 21:04:26.384 [eventLoopGroupProxy-4-1] TRACE io.ktor.server.sessions.Sessions - Sending session data for /v1/users/register: MY_SESSION 2023-12-30 21:04:26.407 [eventLoopGroupProxy-4-1] TRACE i.k.s.p.c.ContentNegotiation - No suitable content converter found for response type class com.example.data.model.SimpleResponse and body SimpleResponse(success=false, message=Missing Some Fields)
nội dung theo yêu cầu là thế này
{
“tên”: “john”,
“email”: “abcd@gmail.com”,
“mật khẩu”: “vượt qua”
}
fun Application.configureSerialization() { install(ContentNegotiation) { Json { prettyPrint = true isLenient = true encodeDefaults = false } } routing { get("/json/gson") { call.respond(mapOf("hello" to "world")) } } }
Những gì tôi đã thử:
I have checked the headers tab on Postman and I have the Content-Type application/json and also the Accept "/" The dependencies on Gradle I used latest.release This is just for a simple Note App for android. The problem seems to be because the RegisterRequest and SimpleResponse I think. This is my first time using Ktor so sorry if I'm a bit behind in some aspects. Thank you for your time
Giải pháp 1
Tôi hoàn toàn không biết về Kotlin, nhưng có vẻ như bạn đang gặp một ngoại lệ nhưng hoàn toàn bỏ qua nó, chỉ trả lời chung chung:
} catch (e: Exception) { // Handle registration errors call.respond(HttpStatusCode.BadRequest, SimpleResponse(false, "Missing Some Fields or Registration Failed"))
Hãy thử quay lại hoặc đăng nhập vào đâu đó thông báo ngoại lệ để bạn hiểu rõ hơn về ngoại lệ đang phàn nàn.
[ad_2]
コメント