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已被删除

  • 相关阅读:
    使用ftp软件上传下载php文件时换行丢失bug
    #1045
    wamp虚拟主机的配置 .
    css3很酷的加载动画多款
    理解CSS3 transform中的Matrix(矩阵)
    好吧,CSS3 3D transform变换,不过如此!
    js流程控制语句
    js变量
    js函数
    Gym 100507I Traffic Jam in Flower Town (模拟)
  • 原文地址:https://www.cnblogs.com/shy-/p/11456450.html
Copyright © 2011-2022 走看看