An airborne attack has basically 2 means of taking a city.
- Bomb the city from above using dropped or missile weapons. Rapidly
- Bypassing perimeter defenses to get troops on the ground.
Bombers
You've said the flying mounts are only strong enough to bear one rider. This means they aren't going to be strong enough to carry heavy bombs like boulders along with the pilot/rider. This means your bombers are going to be limited to standard ranged weapons of the era you are emulating: spears, arrows, bolts, and sling bullets. None of these are going to be particularly effective from a fast-moving flying creature. Shock value? Maybe. But unless they have the numbers to make it rain ammunition, they won't be great at picking off targets. I suppose it is marginally possible that your bombers could light flaming ammunition and drop that to start fires. (Not arrows, though... that's a TV myth.)
These birds/dragons/etc. are going to be large and slow, bred to emphasize power over speed.
The creatures cannot be heavily armored; they lack the wing power for this. And your pilots can only be lightly armored, since they must want to devote as much of their "birds'" power to ammunition. What good is a bomber if it can only carry a pilot and a half-dozen arrows before it has to return home and reload?
To defend against this, your city will build defensive structures with flame-proof, armored, roofs. A stone roof instead of thatched or wooden should suffice. And gives your ground-archers a shield. They sit under that roof, taking pot-shots at anyone dumb enough to fly in range. Give them crossbows if you want a faster ammunition that might have better odds against the bombers. (Maybe a three-person defensive team, the best shooter does the shooting while the other two reload spare crossbows and spot for incoming targets.)
Remember, too, that a bombing force cannot take your city; they can only soften it up by beating it into submission for a ground force or landing air force to then take.
Airborne
Like modern airborne forces (see 101st Airborne Division, US Army), your flying creatures could simply be a means to get men on the ground. These birds will be bred for speed and possibly trained to return to the sally point after their rider leaves. This may allow one bird to supply waves of troops if it survives the flights.
The soldiers will basically be infantry trained to fly into the combat zone. They will carry whatever armor and arms their mounts are capable of carrying, but the speed of landing is vital. While they're in the air, they are larger, vulnerable, targets.
To defend against these airborne troops, you need two things. One, defended archers (see above). And two, restrict your landing areas. If your city has streets too narrow for mounts to land in, then they must land on rooftops or in open parks. It would be a relatively trivial task (assuming the foresight to do so) to build roof lines with points at regular intervals where pole-arms could be set. Imagine a roofline that has weapons similar to these bristling out every three feet or so:
This make the roofs into pincushions where no bird could land. If your mounts are capable of hovering, then troops could jump down onto roofs from the birds, but that still takes some time during when they would be exposed to arrow fire. And you could always throw caltrops out onto rooftops as well, to discourage such efforts.
This limits inbound troops to open park areas. These become killzones where your station defenders with bows, crossbows, spears, etc. Entering that area in the hopes of landing would leave more bodies than fighting men by the end of the day.
An attacking force would probably try to use both Bombers and Airborne troops, but it would be a hard fight in both cases.
Remember, the defenders don't have to kill the birds; they just have to break a wing. And those wings are going to be larger than the body of the bird, so they become easy targets.