这与udacity-cloud开发人员项目有关。我被要求为我创建的id创建一个测试代码,这使我将201和404的错误和单个值抛出错误。此外,还要求我测试签名的URL,这使我犯了同样的错误。不知道为什么。
当我尝试在邮递员中通过id执行测试时,遇到了这3个错误。
FAIL状态码为201 | AssertionError:预期响应的状态码为201,但得到404
失败,该帖子返回ID为|的新项目。 JSONError:意外令牌
import { Router, Request, Response } from 'express';
import { FeedItem } from '../models/FeedItem';
import { requireAuth } from '../../users/routes/auth.router';
import * as AWS from '../../../../aws';
const router: Router = Router();
// Get all feed items
router.get('/', async (req: Request, res: Response) => {
const items = await FeedItem.findAndCountAll({order: [['id', 'DESC']]});
items.rows.map((item) => {
if(item.url) {
item.url = AWS.getGetSignedUrl(item.url);
}
});
res.send(items);
});
//@TODO
//Add an endpoint to GET a specific resource by Primary Key
router.get('/feed/:id', async (req: Request, res: Response) => {
console.log(req.query.id)
const idval = await FeedItem.findByPk(req.query.id)
res.send(idval);
});
// update a specific resource
router.patch('/:id',
requireAuth,
async (req: Request, res: Response) => {
//@TODO try it yourself
res.send(500).send("not implemented")
});
// Get a signed url to put a new item in the bucket
router.get('/signed-url/:fileName',
requireAuth,
async (req: Request, res: Response) => {
let { fileName } = req.params;
const url = AWS.getPutSignedUrl(fileName);
res.status(201).send({url: url});
});
// Post meta data and the filename after a file is uploaded
// NOTE the file name is they key name in the s3 bucket.
// body : {caption: string, fileName: string};
router.post('/',
requireAuth,
async (req: Request, res: Response) => {
const caption = req.body.caption;
const fileName = req.body.url;
// check Caption is valid
if (!caption) {
return res.status(400).send({ message: 'Caption is required or malformed' });
}
// check Filename is valid
if (!fileName) {
return res.status(400).send({ message: 'File url is required' });
}
const item = await new FeedItem({
caption: caption,
url: fileName
});
const saved_item = await item.save();
saved_item.url = AWS.getGetSignedUrl(saved_item.url);
res.status(201).send(saved_item);
});
export const FeedRouter: Router = router;