测试接口

48 阅读1分钟

感谢好友斌哥的指导,成功解决了接口调试的难题,迈了一大步

之前一直因为公司接口文档apizza不能够测试接口而烦恼,然后就是自己也没有使用postman。晚上聊天突然聊到了这个,就立刻试了,发现成功了,激动不已!

image.png

分为三步: 第一步:填写正确的网址, 选择get或者post请求 第二步:填写表头 第三部:填写请求或者body

image.png

image.png

image.png

就是这么简单,上面是post接口的,get的更加的简单

image.png

之后就是看到了我项目中的问题,表单的提交

接口好了怎么把数据传过去呢? 有一个之前写好的案例可以用:

let params = {
               circle_id: circle_id,
               content,
               category_id,
               is_anonymous,
               file_json: JSON.stringify(imgList),
               type: 1,
               main_type: 1
               }
       api.releasePost(params).then(res => {
               if (res.code == 0) {
                       uni.showToast({
                               icon: "success",
                               title: "发帖成功",
                               mask: true
                       })
                       setTimeout(() => {
                               uni.navigateBack()
                       }, 1800)
               }
       })
}


//帖子发布实际上是一个post请求,然后具体信息如下:
// 帖子发布
   releasePost: function(data) {
   	return request({
   		url: '/api/top/releasePost',
   		method: 'POST',
   		data: data,
   	})
   },
       
       


//表单数据的收集如下方代码所示(uniapp语法,和vue类似的)

<script>
// import CusTabbar from '../../components/cus-tabbar.vue';
import {
	onMounted,
	reactive,
	ref,
	toRefs
} from "vue"
import {
	getSystemInfo,
	debounce
} from '../../utils/mixin.js'
import {
	onShow,
	onLoad
} from '@dcloudio/uni-app'
import api from "../../utils/api.js"
import {
	apiUrl
} from "../../utils/request.js"
export default {
	components: {
	},
	props: {},
	methods: {

	},
	setup(props) {
		const state = reactive({
			title: 'Vue3 UniApp',
			systemInfo: {},
			category_id: null,
			detail: {},
			circle_name: '选择圈子',
			content: '',
			is_anonymous: 1,
			list: [],
			typeList: [],
			circle_id: null,
			imgList: [],
			keyword: '',
			mainHeight:0,
			circleList: [],
			status: 'loading',
			reload: true,
			pageSize: 10,
			current_page: 1, //当前页码
			last_page: 1, //总页码
			contentText: {
				contentdown: '下拉加载更多',
				contentrefresh: '疯狂加载中...',
				contentnomore: ''
			}
		})

		onLoad((props) => {
			
			fetchData()
		})
		const selectDialog = ref()

		onMounted(() => {
			const sysInfo = getSystemInfo()
			state.systemInfo = sysInfo
			state.mainHeight = sysInfo.windowHeight / 1.8
		})

		const fetchData = () => {
			api.getCommonData({}).then(res => {
				if (res.code === 0) {
					console.log(res.data, 233)
					state.typeList = res.data.post_category[0].children
				}
			})
			circleData()

		}
		const circleData = (type) => {
			const {
					pageSize,
					current_page, //当前页码
					last_page, //总页码
				} = state
			let params = { keyword: state.keyword }
			if(type == 'lower'){
					params.pageSize = pageSize
					params.page = current_page
			}
			api.getCircleList(params).then(res => {
				if (res.code === 0) {
					if (type === 'lower') {
						state.circleList = state.circleList.concat(res.data.list);
					} else {
						state.circleList = res.data.list;
					}
					state.current_page = res.data.pagination.current; //当前页码

					let lastPage = Math.ceil(res.data.pagination.total / res.data.pagination.pageSize);
					state.last_page = lastPage; //总页码
					state.pageSize = res.data.pagination.pageSize
					console.log(state.current_page, lastPage, '页码')
					// 判断是否还有数据
					if (res.data.pagination.current === lastPage || res.data.pagination
						.total ===
						0) {
						state.status = 'noMore';
					} else {
						state.status = 'more';
					}
				}
			})

		}
		const handleUpper = () => {
			loadData('upper');
		}
		const handleLower = () => {
			loadData('lower');
		}
		const hanldChangeCircle = (id, name) => {
			state.circle_id = id
			console.log(id, name)
			state.circle_name = name
			selectDialog.value.close()
		}
		const open = () => {
			selectDialog.value.open('bottom')
		}
		const close = () => {
			selectDialog.value.close()
		}
		const loadData = async (type) => {

			state.status = 'loading';
			// 判断上拉还是下拉
			if (type === 'upper') {
				state.current_page = 1;
			} else if (type === 'lower') {
				if (state.current_page >= state.last_page) {
					state.status = 'noMore';
					return false;
				} else {
					state.current_page += 1;
				}
			}
			circleData(type)

		}
		const switchChange = (e) => {
			state.is_anonymous = e.detail.value == true ? 2 : 1
			console.log(state.is_anonymous)
		}
		const hanldChangeType = (id) => {
			state.category_id = id;
		}
		const deleteCurrent = (index) => {
			var list = JSON.parse(JSON.stringify(state.imgList));
			list.splice(index, 1);
			state.imgList = list;
		}
		const searchCircle = () => {
			console.log('sousuo')
			circleData()
		}
		
		const handleChooseMyImage = () => {
			uni.chooseImage({
				count: 9,
				sizeType: ['compressed'],
				success: function (res) {
					console.log(res.tempFilePaths);
					if (res.tempFilePaths.length == 0) {
						return;
					}
					var imgArrNow = state.imgList;

					if (imgArrNow.length > 9) {
						uni.showToast({
							title: '图片最多上传9张',
							icon: 'none',
						})
						return
					}


					if (res.tempFilePaths.length > 0) {
						let isUploadStatus = [...new Array(res.tempFilePaths.length).keys()];

						for (let i = 0; i < res.tempFilePaths.length; i++) {
							uploadMyFn(res.tempFilePaths[i])
						}

					}
				},
				complete: (res) => { },
			})
		}
		const uploadMyFn = (pathUrl) => {
			var that = this;
			console.log(pathUrl);
			uni.showLoading();
			uni.uploadFile({
				url: apiUrl() + '/api/admin/file/uploadNoToken',
				filePath: pathUrl,
				name: 'file',
				success(res) {

					if (res.statusCode == 200) {
						const data = JSON.parse(res.data)
						if (data.code == 0) {
							console.log('file', data)
							let imgList = JSON.parse(JSON.stringify(state.imgList))
							imgList.push(data.data.file_url)
							state.imgList = imgList
						} else {
							uni.showToast({
								icon: 'none',
								title: data.message
							})
						}

					} else {
						uni.showToast({
							icon: 'none',
							title: 'Serve ' + res.statusCode
						})
					}
				},
				fail(err) {
					console.log('upload err', err)
				},
				complete() {
					uni.hideLoading()
				}
			})

		}


		const handlePost = () => {
			const {
				content,
				category_id,
				is_anonymous,
				circle_id,
				imgList
			} = state

			console.log(state.content, 122)
			if (!circle_id || state == undefined) {
				uni.showToast({
					icon: "none",
					title: "请选择圈子"
				})
				return;
			}
			if (content == '' || state == undefined) {
				uni.showToast({
					icon: "none",
					title: "请输入帖子内容"
				})
				return;
			}
			if (!category_id || state == undefined) {
				uni.showToast({
					icon: "none",
					title: "请选择分区"
				})
				return;
			}

			let params = {
				circle_id: circle_id,
				content,
				category_id,
				is_anonymous,
				file_json: JSON.stringify(imgList),
				type: 1,
				main_type: 1
			}
			api.releasePost(params).then(res => {
				if (res.code == 0) {
					uni.showToast({
						icon: "success",
						title: "发帖成功",
						mask: true
					})
					setTimeout(() => {
						uni.navigateBack()
					}, 1800)
				}
			})
		}

		return {
			...toRefs(state),
			handlePost,
			hanldChangeType,
			switchChange,
			deleteCurrent,
			hanldChangeCircle,
			handleUpper,
			searchCircle,
			handleLower,
			open,
			close,
			selectDialog,
			handleChooseMyImage
		}
	}
}
</script>

上面就是典型的拿到值就行传递,然后就是先建立一个对象,把数据放在对象里面,然后就是把这个对象作为post的主体,传送过去。

彩蛋:发现公司的文档也可以进行进行测试的,只是不是在测试模式下面,而是在开发者模式下面

image.png