You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.7 KiB
154 lines
3.7 KiB
//服务端地址
|
|
|
|
|
|
const server="http://localhost:8080"
|
|
|
|
export const prefix={
|
|
user:"/api/user",
|
|
activity:"/api/activity",
|
|
image:"/image/"
|
|
}
|
|
//服务器接口地址
|
|
export const API={
|
|
account:{
|
|
//注册
|
|
register:prefix.user+"/register",
|
|
//登录
|
|
login:prefix.user+"/login",
|
|
//查找用户
|
|
find:prefix.user+"/find",
|
|
//更新
|
|
update:prefix.user+"/update",
|
|
//更新密码
|
|
updatePwd:prefix.user+"/updatePwd",
|
|
//查看留言
|
|
leaveWord:prefix.user+"/find/leaveWord",
|
|
//发送好友邀请
|
|
friend:prefix.user+"/friend",
|
|
//拒绝好友邀请
|
|
refuse:prefix.user+"/refuse",
|
|
//同意好友邀请
|
|
agree:prefix.user+"/agree",
|
|
//我的好友
|
|
myFriend:prefix.user+"/friend/list",
|
|
//刷新聊天室状态
|
|
refreshChat:prefix.user+"/chat/status",
|
|
//查找用户
|
|
findUser:prefix.user+"/find/name",
|
|
//查找本人信息
|
|
findOwn:prefix.user+"/find/own"
|
|
},
|
|
main:{
|
|
activity: {
|
|
//发布求助信息
|
|
help: prefix.activity + "/sendHelp",
|
|
//查找活动列表
|
|
find: prefix.activity + "/find",
|
|
//报名活动
|
|
apply:prefix.activity+ "/apply",
|
|
//求助信息统计
|
|
seekHelp:prefix.activity+"/seekHelp",
|
|
//求助信息志愿者
|
|
seekHelpUser:prefix.activity+"/seekHelpUser",
|
|
//帮助信息
|
|
myHelp:prefix.activity+"/help",
|
|
//活动评价
|
|
score:prefix.activity+'/score'
|
|
}
|
|
}
|
|
}
|
|
|
|
export enum Method {
|
|
PUT="PUT",
|
|
POST="POST",
|
|
GET="GET"
|
|
}
|
|
|
|
export enum Result {
|
|
OK="OK",
|
|
FAIL="FAIL"
|
|
}
|
|
|
|
|
|
/**
|
|
* 响应数据
|
|
*/
|
|
export class JSONResponse<Q> {
|
|
result?:Result
|
|
customResult?:Q
|
|
}
|
|
|
|
/**
|
|
* 数据类型转换
|
|
*/
|
|
export abstract class TransformData<Q,T extends JSONResponse<Q>> {
|
|
protected target: T
|
|
|
|
constructor() {
|
|
this.target = this.newObject();
|
|
}
|
|
|
|
protected abstract newObject(): T
|
|
|
|
public transform(data:any){
|
|
this.transformResult(data)
|
|
this.transformBody(data)
|
|
return this.target
|
|
}
|
|
|
|
protected transformBody(data:any){
|
|
|
|
}
|
|
|
|
private transformResult(data:any){
|
|
if("result" in data ) {
|
|
this.target.result = data.result
|
|
}
|
|
if("customResult" in data){
|
|
this.target.customResult = data.customResult
|
|
}
|
|
}
|
|
}
|
|
|
|
//发送请求
|
|
export function request<Q,E extends JSONResponse<Q>,T extends TransformData<Q,E>>(api:string,method:Method,formParams: {[propName:string]: string | Blob|Array<string>},transform:T,callback:Function) {
|
|
let formData
|
|
if(method===Method.GET) {
|
|
formData=null
|
|
}else{
|
|
formData=new FormData()
|
|
for (let formParam in formParams) {
|
|
let params= formParams[formParam]
|
|
if(params instanceof Array){
|
|
for(let value in params){
|
|
if(params.hasOwnProperty(value)) {
|
|
formData.append(formParam + '[]', params[value])
|
|
}
|
|
}
|
|
}else if(params instanceof Blob||typeof params==="string"){
|
|
formData.append(formParam,params)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
fetch(server+api,{
|
|
method:method,
|
|
body:formData,
|
|
credentials: 'include',
|
|
})
|
|
.then(
|
|
response=>{if(response.status===200){
|
|
return response.json()
|
|
}else{
|
|
throw new Error("遇到无法处理的错误,请联系管理员")
|
|
|
|
}}
|
|
)
|
|
.catch(
|
|
error =>console.error('Error:', error)
|
|
)
|
|
.then((response:JSONResponse<Q>)=>{
|
|
callback(transform.transform(response))
|
|
})
|
|
}
|
|
|