zoukankan      html  css  js  c++  java
  • 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已被删除

  • 相关阅读:
    React中的PropTypes详解
    mobile 更改hosts
    sed用例
    Centos 7 开启端口
    node-gyp rebuild 卡住?
    录制客户端脚本
    创建删除表空间以及表空间使用情况查询
    oracle 修改字符集 修改为ZHS16GBK
    linux中压缩、解压缩命令详解
    jps、jstack、jmap、jhat、jstat、hprof使用详解
  • 原文地址:https://www.cnblogs.com/shy-/p/11456450.html
Copyright © 2011-2022 走看看