0

my using Rosencrantz to Api Server.
but
DELETE method set is run compile to error
not working?

i Document copy and path , message, http method to Edited only

nim versin : 0.19.6
rosencrantz : 0.3.8

import
  asyncdispatch,
  asynchttpserver,
  strutils,
  rosencrantz

let handler = get[
  path("/api/users")[
    ok("Get Users")
  ] ~
  pathChunk("/api/users")[
    intSegment(proc(id: int): auto =
      ok("Get User by " & intToStr(id) & "!")
    )
  ]
] ~ delete[
  pathChunk("/api/users")[
    intSegment(proc(id: int): auto =
      ok("Delete User by " & intToStr(id) & "!")
    )
  ]
]

let server = newAsyncHttpServer()
waitFor server.serve(Port(8080), handler)

Error Message

     :
     :
    ... api.nim(16, 3) Error: type mismatch: got <Handler, proc (x: var seq[Handler], i: Natural){.noSideEffect, gcsafe, locks: 0.}>
    ... but expected one of:
    ... proc `~`(h1, h2: Handler): Handler
    ...   first type mismatch at position: 2
    ...   required type: Handler
    ...   but expression 'delete' is of type: proc (x: var seq[Handler], i: Natural){.noSideEffect, gcsafe, locks: 0.}
    ... expression: (get ->
    ...     (path("/api/users") -> ok("Get Users")) ~
    ...     (pathChunk("/api/users") ->
    ...     intSegment(proc (id: int): auto = result = ok(
    ...     `&`("Get User by ", intToStr(id, 1), "!"))))) ~ delete
xbello
  • 7,223
  • 3
  • 28
  • 41

1 Answers1

0

Yo have to qualify the delete method:

] ~ rosencranz.delete[
  pathChunk("/api/users")[
    intSegment(proc(id: int): auto =
      ok("Delete User by " & intToStr(id) & "!")
    )
  ]

Or you will call the system.delete.

xbello
  • 7,223
  • 3
  • 28
  • 41