我在上蒸汽录像课程。我严格按照它编写代码,当我试图发送一个Post请求(通过 Postman )时,得到一个自定义错误代码。在这个过程中,一切都很好,似乎代码是相同的。有人知道该怎么做吗?
import Foundation
import Fluent
import Vapor
struct ProductsController: RouteCollection {
func boot(routes: Vapor.RoutesBuilder) throws {
let productsGroup = routes.grouped("products")
productsGroup.post(use: createHandler)
productsGroup.get(use: getAllHandler)
}
func createHandler(_ req: Request) async throws -> Product {
guard let product = try? req.content.decode(Product.self) else {
throw Abort(.custom(code: 499, reasonPhrase: "Не получилось декодировать контент в модель продукта"))
}
try await product.save(on: req.db)
return product
}
func getAllHandler(_ req: Request) async throws -> [Product] {
let products = try await Product.query(on: req.db).all()
return products
}
}
字符串
swift文件中有一个连接。
import Fluent
import Vapor
func routes(_ app: Application) throws {
try app.register(collection: ProductsController())
}
1条答案
按热度按时间jpfvwuh41#
由于“产品”结构字段与HTML表单字段之间存在以下一个或多个差异,几乎可以肯定解码失败。检查:
1.如果表单输入可以为空,则结构字段定义是可选的。
1.表单输入类型是适当的。例如,解码日期和整数可以更容易地作为字符串完成,然后进行后处理。
您可以通过注解掉结构体字段并检查空结构体解码来确定哪些是失败的。然后逐个取消注解,直到再次遇到错误。