Definitelytyped: @types/express Body-Objekt der Anfrage an T (generisch)

Erstellt am 5. Juni 2017  ·  3Kommentare  ·  Quelle: DefinitelyTyped/DefinitelyTyped

Sie da!

Warum nicht den Text der Anfrage in T ändern? Auf diese Weise kann ich sicher sein, was mein Objekt enthält.

in express-serve-static-core/index.d.ts Zeile 438:

interface Request<T> extends http.IncomingMessage, Express.Request {
...
...
body: T
...
...

und ich benutze es so:

updateUser = (req: Request<User>, res: Response, next: NextFunction) => {
   const userToUpdate = req.body;
...
...
}

Hilfreichster Kommentar

Sinnvoll, ich denke auch, dass es eine Möglichkeit gibt, diese Funktion einzubeziehen, ohne Änderungen zu unterbrechen, indem Standardgenerika verwendet werden, z.

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}

Alle 3 Kommentare

Einverstanden, dies sollte für Leute geändert werden, die ihren Anfragetext eingeben möchten, dasselbe sollte für cookies , params , query , @borisyankov gelten, was denkst du?

Ich hasse diese Idee nicht, aber gleichzeitig gibt es dieses Problem von types/express, das erklärt, dass body aus einem bestimmten Grund weggelassen wurde. Der Grund dafür ist, dass body nicht nativ im Express Request-Objekt vorhanden ist, sondern wegen des Body-Parsers hinzugefügt wird.

Leider funktioniert die DefinitelyTyped-Version von Body-Parser nicht mit der vorgeschlagenen Problemumgehung. Also muss hier entweder body hinzugefügt oder DefinitelyTyped/body-parser aktualisiert werden.

Sinnvoll, ich denke auch, dass es eine Möglichkeit gibt, diese Funktion einzubeziehen, ohne Änderungen zu unterbrechen, indem Standardgenerika verwendet werden, z.

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen