• ktor HTTP API 练习


    练习一

    Question

    为每个片段添加唯一 id,并为 /snippets 添加一个 DELETE http 动词,以允许通过身份认证的用户删除自己的片段。

    Answer

    首先为每个片段添加唯一 id:

    data class Snippet(val id: Int, val user: String, val text: String)
    val snippets = Collections.synchronizedList(
        mutableListOf(
            Snippet(id = 1, user = "test", text = "hello"),
            Snippet(id = 2, user = "test", text = "world")
        )
    )
    

    修改新增片段的post请求:

    authenticate {
                    post {
                        val post = call.receive<PostSnippet>()
                        val principal = call.principal<UserIdPrincipal>() ?: error("No principal")
                        snippets += Snippet(snippets.size+1, principal.name, post.snippet.text)
                        call.respond(mapOf("OK" to true))
                    }
                }
    

    先测试新增片段的请求是否正常,ID正确

    添加删除片段的delete请求:

    authenticate {
                    delete("/{id}") {
                        val id = call.parameters["id"]
                        val snip = snippets.find { s -> s.id == id?.toInt() }
                        if (snip != null) {
                            snippets.remove(snip)
                            call.respond(mapOf("snippets" to synchronized(snippets) { snippets.toList() }))
                        }
                        else{
                            call.respond(mapOf("msg" to "no such id"))
                        }
                    }
                }
    

    添加一个DELETE的HTTP请求测试

    DELETE {{host}}/snippets/1
    Authorization: Bearer {{auth_token}}
    

    返回结果如下,id为1的snippets已被删除

  • 相关阅读:
    session
    .net core 入坑经验
    .net core 入坑经验
    .net core 入坑经验
    一段刚刚出炉的CSV文件转换为DataTable对象的代码
    Github的一般用法
    SQLite简单使用记录
    一次SQLServer数据库宕机问题
    B样条基函数(cubic spline basis)
    matlab使用
  • 原文地址:https://www.cnblogs.com/shy-/p/11456450.html
Copyright © 2020-2023  润新知