dict-front/src/api/dict.ts

129 lines
2.8 KiB
TypeScript

import apiClient from './client'
export interface WordContent {
chi_exp: string
example: string
}
export interface WordDefinition {
query: string
pos: string[]
contents: WordContent[]
}
export interface SearchParams {
language: string
query: string
sort?: string
order?: string
}
export interface SearchSuggestParams {
query: string
language: string
sort?: string
order?: string
}
export interface SearchSuggestResponse {
list: string[]
}
// 搜索单词
export const searchWord = async (params: SearchParams): Promise<WordDefinition> => {
const packet = {
language: params.language,
query: params.query,
sort: params.sort || "relevance",
order: params.order || "des"
}
const response = await apiClient.post('/search/word', packet)
console.log(response)
return response.data
}
// 搜索推荐
export const searchSuggest = async (params: SearchSuggestParams): Promise<SearchSuggestResponse> => {
const response = await apiClient.post('/search/list/word', {
query: params.query,
language: params.language,
sort: params.sort || "relevance",
order: params.order || "des"
})
return response.data
}
/**
* 谚语相关接口
*/
export interface ProverbDetail {
text: string
chi_exp: string
freq: number
}
export interface ProverbListItem {
id: number
proverb: string
chi_exp: string
}
// 获取法语谚语详情
export const getProverbDetail = async (proverbId: number): Promise<{ result: ProverbDetail }> => {
const formData = new FormData()
formData.append('proverb_id', proverbId.toString())
const response = await apiClient.post('/search/proverb', formData, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
return response.data
}
// 获取谚语联想建议
export const searchProverbSuggest = async (query: string, dictLanguage: string): Promise<{ list: ProverbListItem[] }> => {
const response = await apiClient.post('/search/list/proverb', {
query,
dict_language: dictLanguage
})
return response.data
}
/**
* 日语惯用语相关接口
*/
export interface IdiomDetail {
id: number
text: string
search_text: string
chi_exp: string
example: string
freq: number
}
export interface IdiomListItem {
id: number
proverb: string
chi_exp: string
}
// 获取日语惯用语详情
export const getIdiomDetail = async (queryId: number): Promise<{ result: IdiomDetail }> => {
const response = await apiClient.post('/search/idiom', null, {
params: { query_id: queryId }
})
return response.data
}
// 获取日语惯用语联想建议
export const searchIdiomSuggest = async (query: string, dictLanguage: string = 'jp'): Promise<{ list: IdiomListItem[] }> => {
const response = await apiClient.post('/search/list/idiom', {
query,
dict_language: dictLanguage
})
return response.data
}