使用@Field注释参数改造"form-urlencoded"请求



我有两个查询:

@POST("/auth/login")
suspend fun login(@Body user: LoginUserDto): AuthResponse<TokenDto>
@FormUrlEncoded
@POST("/auth/refresh")
suspend fun refreshToken(@Field("refreshtoken") refreshToken: String): AuthResponse<TokenDto>

第一个工作良好,这意味着baseUrl是OK的。第二个返回HTTP 404 Not Found。当我查看Chucker拦截器日志时,url是正确的,并且请求中存在refreshToken。当我尝试在vsCode中从request.rest手动触发它时,像这样:

POST http://localhost:4000/auth/refresh/eyJhbGciOiJIUzI1NiIsInR5...blablabla

端点的代码像这样开始(node.js服务器):

app.post('/auth/refresh/:refreshtoken', async (req, res) => {
const refreshToken = req.params.refreshtoken;
// some code

我相信我在我的改造呼叫refreshToken(@Field("refreshtoken") refreshToken: String)中犯了错误。smb可以帮助如何正确地改造这样的@FormUrlEncoded请求?

谢谢你的帮助。

@Field用于在Retrofit中发送@FormUrlEncoded请求,该请求隐藏了您的参数,而不附加url以提供安全性。用于POST请求。

@查询参数附加到URL。

如果你使用@Field请求,它会隐藏你的参数,而不是附加url。

如果你使用的是@Query请求,那么你的所有参数都被附加到你的请求中,并且对用户可见。

根据您的api请求,您必须使用上述注释之一。如果api请求接受@FormUrlEncoded数据,请使用@Field,或者如果他们想要附加url,请使用@Query。

相关内容

  • 没有找到相关文章

最新更新