ios Swift 5.8和Vapor上的后端项目

fquxozlt  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(130)

我在上蒸汽录像课程。我严格按照它编写代码,当我试图发送一个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())
    
}


这里是code from the video course

jpfvwuh4

jpfvwuh41#

由于“产品”结构字段与HTML表单字段之间存在以下一个或多个差异,几乎可以肯定解码失败。检查:

  1. Product中的每个字段都存在HTML名称标记。
    1.如果表单输入可以为空,则结构字段定义是可选的。
    1.表单输入类型是适当的。例如,解码日期和整数可以更容易地作为字符串完成,然后进行后处理。
    您可以通过注解掉结构体字段并检查空结构体解码来确定哪些是失败的。然后逐个取消注解,直到再次遇到错误。

相关问题