Swift 5.8 和 Vapor 上的后端项目

问题描述 投票:0回答:1

我正在参加蒸汽视频课程。我严格按照它编写代码,当我尝试发送 Post 请求(由邮递员)时,会得到一个自定义错误代码。当然,一切都很好,而且代码似乎是相同的。有谁知道该怎么办吗?

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
    }
}

routes.swift 文件中有一个连接。

import Fluent
import Vapor

func routes(_ app: Application) throws {
    
    try app.register(collection: ProductsController())
    
}

这是 code from the video course

ios swift macos backend vapor
1个回答
0
投票

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

  1. 产品中的每个字段都存在 HTML 名称标签。
  2. 如果表单输入可能为空,则结构字段定义是可选的。
  3. 表单输入类型合适。例如,解码日期和整数可能更容易作为字符串完成,然后进行后处理。
© www.soinside.com 2019 - 2024. All rights reserved.