1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
| from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware import random from pydantic import BaseModel from typing import List
app = FastAPI(title="随机字符串返回API")
app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
string_data = [ {"text": "Hello, World!", "language": "英语", "weight": 10, "lang_codes": ["en", "en-US", "en-GB"]}, {"text": "¡Hola, Mundo!", "language": "西班牙语", "weight": 5, "lang_codes": ["es", "es-ES", "es-MX"]}, {"text": "Bonjour, le Monde !", "language": "法语", "weight": 5, "lang_codes": ["fr", "fr-FR"]}, {"text": "Hallo, Welt!", "language": "德语", "weight": 5, "lang_codes": ["de", "de-DE"]}, {"text": "Ciao, Mondo!", "language": "意大利语", "weight": 3, "lang_codes": ["it", "it-IT"]}, {"text": "こんにちは、世界!", "language": "日语", "weight": 5, "lang_codes": ["ja", "ja-JP"]}, {"text": "Olá, Mundo!", "language": "葡萄牙语", "weight": 3, "lang_codes": ["pt", "pt-PT", "pt-BR"]}, {"text": "Привет, мир!", "language": "俄语", "weight": 5, "lang_codes": ["ru", "ru-RU"]}, {"text": "नमस्ते, दुनिया!", "language": "印地语", "weight": 2, "lang_codes": ["hi", "hi-IN"]}, {"text": "ہیلو، دنیا!", "language": "乌尔都语", "weight": 2, "lang_codes": ["ur", "ur-PK"]}, {"text": "হ্যালো, বিশ্ব!", "language": "孟加拉语", "weight": 2, "lang_codes": ["bn", "bn-BD"]}, {"text": "Witaj, Świecie!", "language": "波兰语", "weight": 2, "lang_codes": ["pl", "pl-PL"]}, {"text": "Привіт, Світе!", "language": "乌克兰语", "weight": 2, "lang_codes": ["uk", "uk-UA"]}, {"text": "Hallo, Wereld!", "language": "荷兰语", "weight": 2, "lang_codes": ["nl", "nl-NL"]}, {"text": "Hej, Världen!", "language": "瑞典语", "weight": 2, "lang_codes": ["sv", "sv-SE"]}, {"text": "Merhaba, Dünya!", "language": "土耳其语", "weight": 2, "lang_codes": ["tr", "tr-TR"]}, {"text": "你好,世界!", "language": "中文(简体)", "weight": 10, "lang_codes": ["zh", "zh-CN", "zh-Hans"]}, {"text": "안녕, 세상!", "language": "韩语", "weight": 4, "lang_codes": ["ko", "ko-KR"]}, {"text": "Salve, Mundus!", "language": "拉丁语", "weight": 1, "lang_codes": ["la"]}, {"text": "Χαῖρε, ὦ Κόσμε!", "language": "古希腊语", "weight": 1, "lang_codes": ["grc"]}, {"text": "Saluton, Mondo!", "language": "世界语", "weight": 1, "lang_codes": ["eo"]}, {"text": "nuqneH, qo'!", "language": "克林贡语", "weight": 1, "lang_codes": ["tlh"]}, {"text": "வணக்கம், உலகம்!", "language": "泰米尔语", "weight": 1, "lang_codes": ["ta", "ta-IN"]}, {"text": "Ahoj, světe!", "language": "捷克语", "weight": 1, "lang_codes": ["cs", "cs-CZ"]}, {"text": "Bună ziua, Lume!", "language": "罗马尼亚语", "weight": 1, "lang_codes": ["ro", "ro-RO"]}, {"text": "Szia, Világ!", "language": "匈牙利语", "weight": 1, "lang_codes": ["hu", "hu-HU"]}, {"text": "Hej, Verden!", "language": "丹麦语", "weight": 1, "lang_codes": ["da", "da-DK"]}, {"text": "Hei, Maailma!", "language": "芬兰语", "weight": 1, "lang_codes": ["fi", "fi-FI"]}, {"text": "Здравей, Свят!", "language": "保加利亚语", "weight": 1, "lang_codes": ["bg", "bg-BG"]}, {"text": "Hei, Verden!", "language": "挪威语", "weight": 1, "lang_codes": ["no", "nb-NO"]}, {"text": "Γειά σου, Κόσμε!", "language": "希腊语", "weight": 1, "lang_codes": ["el", "el-GR"]}, {"text": "Shalom, Olam!", "language": "希伯来语", "weight": 1, "lang_codes": ["he", "he-IL"]}, {"text": "Marhaban, ya 'Alam!", "language": "阿拉伯语", "weight": 3, "lang_codes": ["ar", "ar-SA"]}, {"text": "Salam, Donya!", "language": "波斯语", "weight": 1, "lang_codes": ["fa", "fa-IR"]}, {"text": "Sawasdee, Lok!", "language": "泰语", "weight": 1, "lang_codes": ["th", "th-TH"]}, {"text": "Xin chào, Thế giới!", "language": "越南语", "weight": 1, "lang_codes": ["vi", "vi-VN"]}, {"text": "Halo, Dunia!", "language": "印尼语/马来语", "weight": 1, "lang_codes": ["id", "id-ID", "ms", "ms-MY"]}, {"text": "Kamusta, Mundo!", "language": "他加禄语", "weight": 1, "lang_codes": ["tl", "tl-PH"]}, {"text": "Habari, Dunia!", "language": "斯瓦希里语", "weight": 1, "lang_codes": ["sw", "sw-KE"]}, {"text": "Sannu, Duniya!", "language": "豪萨语", "weight": 1, "lang_codes": ["ha", "ha-NG"]}, {"text": "Selam, 'Alam!", "language": "阿姆哈拉语", "weight": 1, "lang_codes": ["am", "am-ET"]}, {"text": "Aloha, Honua!", "language": "夏威夷语", "weight": 1, "lang_codes": ["haw"]}, {"text": "Kia ora, Ao!", "language": "毛利语", "weight": 1, "lang_codes": ["mi", "mi-NZ"]}, {"text": "Yá'át'ééh, Nahasdzáán!", "language": "纳瓦霍语", "weight": 1, "lang_codes": ["nv", "nv-US"]}, ]
class RandomStringResponse(BaseModel): message: str language: str lang_codes: List[str] weight: int status: str = "success"
class LanguageWeightResponse(BaseModel): text: str language: str lang_codes: List[str] weight: int
@app.get("/hello-world", response_model=RandomStringResponse, description="根据权重随机返回一个字符串") async def get_random_string(): """从预设的字符串列表中根据权重随机返回一个字符串""" weights = [item["weight"] for item in string_data] random_data = random.choices(string_data, weights=weights, k=1)[0] return { "message": random_data["text"], "language": random_data["language"], "lang_codes": random_data["lang_codes"], "weight": random_data["weight"], "status": "success" }
@app.get("/hello-world/{language}", response_model=RandomStringResponse, description="返回指定语言的字符串") async def get_specific_language(language: str): """返回指定语言的字符串,可以传入语言名称或语言代码""" matched_languages = [] for item in string_data: if language.lower() == item["language"].lower(): matched_languages.append(item) elif language.lower() in [code.lower() for code in item["lang_codes"]]: matched_languages.append(item) if matched_languages: matched_item = matched_languages[0] return { "message": matched_item["text"], "language": matched_item["language"], "lang_codes": matched_item["lang_codes"], "weight": matched_item["weight"], "status": "success" } else: return { "message": f"未找到语言 '{language}' 对应的字符串", "language": "未知", "lang_codes": [], "weight": 0, "status": "error" }
@app.get("/all-strings", response_model=List[LanguageWeightResponse], description="获取所有字符串及其信息") async def get_all_strings(): """返回所有字符串及其信息""" return string_data
@app.get("/random-equal", response_model=RandomStringResponse, description="等概率随机返回一个字符串(不考虑权重)") async def get_random_string_equal(): """等概率随机返回一个字符串(不考虑权重)""" random_data = random.choice(string_data) return { "message": random_data["text"], "language": random_data["language"], "lang_codes": random_data["lang_codes"], "weight": random_data["weight"], "status": "success" }
if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=80)
|